import Vue from "vue";

import Cookies from "js-cookie";

import "normalize.css/normalize.css"; // a modern alternative to CSS resets

import Element from "element-ui";
import "./styles/element-variables.scss";

import "@/styles/index.scss"; // global css

import App from "./App";
import store from "./store";
import router from "./router";

import "./icons"; // icon
import "./permission"; // permission control
import "./utils/error-log"; // error log

import * as filters from "./filters"; // global filters
import echarts from "echarts";
Vue.prototype.$echarts = echarts;
/**
 * If you don't want to use mock-server
 * you want to use MockJs for mock api
 * you can execute: mockXHR()
 *
 * Currently MockJs will be used in the production environment,
 * please remove it before going online! ! !
 */
import { mockXHR } from "../mock";
if (process.env.NODE_ENV === "production") {
  mockXHR();
}

Vue.use(Element, {
  size: Cookies.get("size") || "medium" // set element-ui default size
});

// register global utility filters
Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key]);
});

Vue.config.productionTip = false;

import { setToken } from "@/utils/auth";

setToken("DataXWeb-Token");

// 模拟用户登录状态
store.commit("user/SET_TOKEN", "DataXWeb-Token");
store.commit("user/SET_ROLES", ["ROLE_ADMIN"]);
store.commit("user/SET_NAME", "管理员");
store.commit(
  "user/SET_AVATAR",
  "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif"
);

// 生成动态路由
store.dispatch("permission/generateRoutes", ["admin"]).then(accessRoutes => {
  router.addRoutes(accessRoutes);
});

new Vue({
  el: "#app",
  router,
  store,
  render: h => h(App)
});
